<!--
 * @FilePath     : /study_code/css/flex-shrink.html
 * @Description  : 子项尺寸 缩小比例
 * @Date         : 2025-04-27 14:31:37
 * @Author       : Fang YingGui
 * @LastEditors  : fangyinggui 18715384437@163.com
 * @LastEditTime : 2025-04-27 14:31:37
-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>documentName</title>
    <link rel="stylesheet" href="" />
    <style>
      div {
        height: 20px;
      }
      .parent {
        display: flex;
        width: 400px;
        background-color: lightblue;
        padding-top: 10px;
      }

      .c-a1 {
        width: 200px;
        flex-shrink: 0;
        background-color: lightcoral;
      }
      .c-b1 {
        width: 300px;
        flex-shrink: 0;
        background-color: lightgreen;
      }

      /*
      都不缩小，超出时溢出；

      设置 A 的 flex-shrink 为 0，B 的 flex-shrink 为 0
      则 A，B 都不减小宽度，A、B 的实际宽度为他们本身的宽度，即 A 的实际宽度为 200px ； B 的实际宽度为 300px
      */

      .c-a2 {
        width: 200px;
        flex-shrink: 0;
        background-color: lightcoral;
      }
      .c-b2 {
        width: 300px;
        flex-shrink: 1;
        background-color: lightgreen;
      }

      /*
      设置为0不缩放，
      设置为1，缩放（这里超出的宽度都B减去）

      A 的 flex-shrink 为 0，B 的 flex-shrink 为 1，则 A 不减小宽度，B 减小
      则 A 的实际宽度为他本身的宽度= 200px ， B 的实际宽度为 300px - 100px（超出的宽度）= 200px
      */


      .c-a3 {
        width: 200px;
        flex-shrink: 3;
        background-color: lightcoral;
      }
      .c-b3 {
        width: 300px;
        flex-shrink: 2;
        background-color: lightgreen;
      }

      /*
      如果 A，B 都减小宽度，
      A 设置 flex-shirk 为 3，B 设置 flex-shirk 为 2。
      则最终 A 的大小为： 自身宽度 (200px) - A 减小的宽度(100px * (200px * 3 / (200px * 3 + 300px * 2))) = 150px
      最终 B 的大小为： 自身宽度 (300px)- B 减小的宽度 (100px * (300px * 2/(200px* 3 + 300px* 2))) = 250px

      计算公式总结：
      A最终尺寸
      = A自身宽度 - A减小的宽度
      =          - （超出宽度 * A缩小系数）
      =          - 超出宽度 *  (A尺寸 * A缩小比例 / (A尺寸 * A缩小比例 + B尺寸 * B缩小比例))
      */
    </style>
  </head>
  <body>
    <div class="parent">
      <div class="c-a1"></div>
      <div class="c-b1"></div>
    </div>

    <hr />

    <div class="parent">
      <div class="c-a2"></div>
      <div class="c-b2"></div>
    </div>

    <hr />

    <div class="parent">
      <div class="c-a3"></div>
      <div class="c-b3"></div>
    </div>
    <script></script>
  </body>
</html>
